package com.xufx.thread.liaoxuefeng.thread7_deadLock;

/**
 * Created by xufx on 2021/12/29 12:48
 * JVM允许同一个线程重复获取同一个锁--> 可重入锁
 * 由于java线程是可重入锁，所以，获取锁的时候，不但要判断是否是第一次获取锁，还要记录是第几次获取锁。
 * 死锁： 两个线程各自持有不同的锁，然后各自想要获取对方持有的锁，形成了无限等待的局面，就是死锁
 * 解决死锁的办法是线程获取锁的顺序保持严格一致。都严格遵守先获取lockA，后获取lockB的顺序
 */
public class DeadLockMain {

}
class Counter{
    private int count = 0;
    public synchronized void add(int n) {
        if (n < 0){
            dec(-n);
        }else {
            count += n;
        }
    }
    public synchronized void dec(int n){
        count += n;
    }
}
